#include "../testing.h"

#include <stdlib.h>
#include <stdio.h>

int assert_passed = 0;
int assert_failed = 0;

void _assert_int_equals(const int val1, int val2, const char * message, const char * file, int line)
{
	if(val1 == val2)
	{
		assert_passed++;
	}
	else
	{
		assert_failed++;
		printf("En el archivo '%s', linea %i:\n\t%s\n\tassert_int_equals: Se esperaba %i pero se obtuvo %i\n", file, line, message, val1, val2);
	}
}

void _assert_int_notEquals(const int val1, int val2, const char * message, const char * file, int line)
{
	if(val1 != val2)
	{
		assert_passed++;
	}
	else
	{
		assert_failed++;
		printf("En el archivo '%s', linea %i:\n\t%s\n\tassert_int_Notequals: Se esperaba cualquier valor != de %i pero se obtuvo %i\n", file, line, message, val1, val2);
	}
}

void _assert_is_true( int val , const char * message, const char * file, int line)
{
	if(val)
	{
		assert_passed++;
	}
	else
	{
		assert_failed++;
		printf("En el archivo '%s', linea %i:\n\t%s\n\tassert_is_true: el valor fue falso\n", file, line, message);
	}
}

void _assert_is_false( int val , const char * message, const char * file, int line)
{
	_assert_is_true(!val, message,file, line);
}

void _assert_is_null( void* val , const char * message, const char * file, int line)
{
	if(val == NULL)
	{
		assert_passed++;
	}
	else
	{
		assert_failed++;
		printf("En el archivo '%s', linea %i:\n\t%s\n\tassert_is_null: el valor fue distinto de nulo\n", file, line, message);
	}
}

void _assert_is_notNull( void* val , const char * message, const char * file, int line)
{
	if(val != NULL)
	{
		assert_passed++;
	}
	else
	{
		assert_failed++;
		printf("En el archivo '%s', linea %i:\n\t%s\n\tassert_is_true: el valor fue nulo\n", file, line, message);
	}
}

void testing_dump()
{
	puts("Pruebas finalizadas");
	printf("Total de pruebas realizadas: %i correcta/s, %i fallida/s\n", assert_passed, assert_failed);
}


